import os  
import shutil  
  
def copy_files_from_a_to_b(path_a, path_b):  
    # 遍历路径B中的所有文件夹和文件  
    for root, dirs, files in os.walk(path_b):  
        for file_name in files:  
            # 构造路径B中文件的完整路径  
            dest_file_path = os.path.join(root, file_name)  
              
            # 构造路径A中对应文件的相对路径  
            rel_path_from_b = os.path.relpath(root, path_b)  
            rel_path_in_a = os.path.join(path_a, rel_path_from_b, file_name)  
              
            # 检查路径A中是否存在该文件  
            if os.path.exists(rel_path_in_a):  
                # 构造路径A中文件的完整路径（注意：这里我们直接使用了rel_path_in_a，  
                # 但如果path_a是相对于当前工作目录的，则可能需要将其转换为绝对路径）  
                # 如果path_a是绝对路径，则下面这行可以省略，因为rel_path_in_a已经是绝对路径了（如果path_a是绝对的）  
                # abs_src_file_path = os.path.abspath(rel_path_in_a)  
                # 但为了清晰起见，我们直接使用rel_path_in_a，并假设path_a已经正确处理  
                  
                # 输出正在覆盖的文件信息  
                print(f"正在覆盖文件: {dest_file_path}")  
                  
                # 复制文件从路径A到路径B（覆盖）  
                shutil.copy2(rel_path_in_a, dest_file_path)  
            else:  
                # 如果不需要输出未找到的文件信息，可以注释掉下面这行  
                print(f"文件不存在于路径A中: {rel_path_in_a}")  
  
if __name__ == "__main__":  
    # 提示用户输入路径A和路径B  
    path_a = input("请输入路径A: ")  
    path_b = input("请输入路径B: ")  
      
    # 确保路径A和路径B都是存在的  
    if not os.path.exists(path_a):  
        print(f"路径A不存在: {path_a}")  
    else:  
        if not os.path.exists(path_b):  
            print(f"路径B不存在: {path_b}")  
        else:  
            # 执行文件复制操作  
            copy_files_from_a_to_b(path_a, path_b)  
            print("文件复制完成。")